#pragma once
#include <math.h>

#include <set>

#include "DataStructure/Common/Constant.h"
#include "DataStructure/Common/DataStructureNamespace.h"
#include "DataStructure/Common/Real.h"
#include "DataStructure/Common/SGObject.h"
#include "DataStructure/Common/SetBase.h"
#include "DataStructure/Input/Load/LoadTypes.h"

SG_DATASTRUCTURE_FEM_NAMESPACE_OPEN
///< @brief  定义边界表面的均匀热流负荷。
struct DECLSPEC QBDY3Data : public SetBase
{
    SG::DataStructure::Common::Real m_Q0       = 0;  ///< 热通量或倍率，为正表示热量流入表面
    SG::DataStructure::Common::I64  m_CNTRLND  = 0;  ///< 热通量载荷的控制点
    SG::DataStructure::Common::I64  m_EID      = 0;  ///< CHBDYj单元识别编号
    SG::DataStructure::Common::I64  m_domainId = 0;  ///<
    static SG::DataStructure::FEM::LoadType GetType ()
    {
        return SG::DataStructure::FEM::LoadType::LOAD_QBDY3;
    };
};

///< @brief 重载==
DECLSPEC bool operator== (const QBDY3Data& val1, const QBDY3Data& val2);

using QBDY3DataSet = std::set<QBDY3Data>;

SG_DATASTRUCTURE_FEM_NAMESPACE_CLOSE